home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.44 / puritymag / puritymag.p < prev    next >
Text File  |  1995-02-26  |  44KB  |  1,256 lines

  1. PROGRAM PurityMag;
  2.  
  3. {$opt q}
  4.  
  5. USES Graphics, Intuition, ExecSupport;
  6.  
  7. {$incl "dos.lib",
  8.        "workbench/startup.h",
  9.        "workbench/icon.h",
  10.        "icon.lib",
  11.        "exec/memory.h",
  12.        "wb.lib",
  13.        "gadtools.lib"}
  14.  
  15. CONST
  16.   APPICON_ID = 1;
  17.   NoWin    = "Kann kein Fenster öffnen !!";
  18.   NoScr    = "Kann keinen Screen öffnen !!";
  19.   NoAppPort= "Kann keinen MsgPort installieren !!";
  20.   NoAppI   = "Kann kein AppIcon installieren !!";
  21.   NoWBLib  = "Kann die workbench.library nicht öffnen !!";
  22.   NoMem    = "Kein Speicher mehr frei !!";
  23.   NoGTLib  = "Kann die gadtools.library nicht öffnen !!";
  24.   NoWBLock = "Kann die Workbench nicht locken !!";
  25.   NoVi     = "Kann keine VisualInfo bekommen !!";
  26.  
  27.   ver      = "$VER: PurityMag II  V1.11 (21.11.1994)";
  28.   version  = "PurityMag II  V1.11 (Release Date: 21.11.94) - ©1993/94 by BOMBERSOFT";
  29.   flags    = ACTIVATE+RMBTRAP+BORDERLESS;
  30.   idcmp    = REQSET+GADGETUP+RAWKEY+INTUITICKS+MOUSEMOVE;
  31.   max      = 40;
  32.   forumm   = "-=====================- FORUM -=====================-";
  33.   allge    = "-=====================- ALLGEMEINES -=====================-";
  34.   hsp      = "-=====================- HIGHSOFT-PASCAL-PROGRAMME -=====================-";
  35.   kikk     = "-=====================- KICKPASCAL-PROGRAMME -=====================-";
  36.   pccq     = "-=====================- PCQ-PROGRAMME -=====================-";
  37.   anll     = "-=====================- ANLEITUNGEN -=====================-";
  38.  
  39.   defwin   = "CON:0/11/300/120/Purity-DiskMag";
  40.  
  41. TYPE
  42.   feld     = ARRAY[1..max] OF ^STRING;
  43.   strtyp   = STRING[80];
  44.   feld1    = ARRAY[1..10] OF p_Gadget;
  45.   feld2    = ARRAY[1..9] OF IntuiText;
  46.   Plane    = ARRAY[1..5] OF WORD;
  47.  
  48.  
  49. VAR
  50.   Pens                          : ARRAY[1..9] OF INTEGER;
  51.   xpos,x1,x2 : INTEGER;
  52.   AppPort                       : p_MsgPort;     
  53.   AppObj                        : p_DiskObject;  
  54.   MyAppIcon                     : p_AppIcon;     
  55.   AppMsg                        : p_AppMessage;  
  56.   ta                            : ARRAY[1..15] OF TagItem;
  57.   le,te,wi,he                   : INTEGER;
  58.   modee                         : LONG;
  59.   ps                            : p_Screen;
  60.   def_forum,def_allge,def_pcq,
  61.   def_kick,def_hspas,
  62.   def_anl                       : STRING;
  63.   nw                            : NewWindow;
  64.   wp                            : p_Window;                  
  65.   rp                            : p_RastPort;                
  66.   vp                            : p_ViewPort;                
  67.   sp                            : p_Screen;                  
  68.   ns                            : NewScreen;
  69.   msg                           : ^IntuiMessage;
  70.   KlickG,g                      : p_Gadget;
  71.   GadNum                        : INTEGER;
  72.   tattr                         : TextAttr;
  73.   i,j                           : LongInt;
  74.   mgad                          : feld1;                     STATIC;
  75.   it                            : feld2;                     STATIC;
  76.   f                             : Text;
  77.   alltxt,allbef,fortxt,forbef,
  78.   pcqtxt,pcqbef,kicktxt,kickbef,
  79.   hspastxt,hspasbef,anltxt,anlbef : feld;                    STATIC;
  80.   allanz,foranz,pcqanz,kickanz,
  81.   hspasanz,anlanz,k,x            : INTEGER;
  82.   {dummy,}befehl                  : STRING;
  83.   lies_mich_zuerst,
  84.   pcqconf,
  85.   kickconf,
  86.   hsconf,
  87.   allconf,
  88.   forumconf,
  89.   anlconf                       : STRING;
  90.   all,
  91.   foru,
  92.   pcq,
  93.   kick,
  94.   ok,
  95.   news,
  96.   anl,
  97.   dumm,
  98.   lmz,
  99.   dummy                         : BOOLEAN;
  100.   qual,code                     : LONG;
  101.   err,fehler                    : INTEGER;
  102.   dd,class,total_mem            : LONG;
  103.   fh                            : BPTR;
  104.   ausf,
  105.   buff,buff1                    : STRING;
  106.   pnummer                       : STRING;
  107.   done                          : Boolean;
  108.   quitit                        : IntuiText;
  109.   Breite,Höhe,bla               : INTEGER;
  110.   std,min,sek                   : BYTE;
  111.   stdd, minn, sekk,
  112.   total_mem_string              : STRING;
  113.   rubigad                       : ARRAY[1..41] OF p_Gadget;    STATIC;
  114.   nr,s                          : STR;
  115.   p                             : PTR;
  116.   ÜberGadget                    : Gadget; STATIC;
  117.   ÜberIt                        : IntuiText; STATIC;
  118.   ÜberDone                      : BOOLEAN; STATIC;
  119.   aok                           : WORD;
  120.   stri                          : STRING;
  121.   maxy                          : INTEGER;
  122.   TitelImage                    : Image;
  123.   StMess                        : p_WBStartup;
  124.   es                            : EasyStruct;
  125.   ConWin                        : STRING;
  126.   xoff, yoff                    : INTEGER;
  127.   ng                            : NewGadget;
  128.   gl,gl1,zurückgad              : p_Gadget;
  129.   vi                                      : PTR;
  130.   ÜberList, HilfeList           : p_List;
  131.  
  132.  
  133. TYPE
  134.   data = ARRAY[1..1786] OF WORD;
  135.  
  136. VAR
  137.   dat        : ^data;
  138.  
  139. PROCEDURE uhrzeit(VAR stunden,minuten,sekunden:Byte);
  140. VAR zeit: DATESTAMP;
  141.     xx  : p_DateStamp;
  142. BEGIN
  143.   xx := _DATESTAMP(^zeit);
  144.   stunden:=zeit.ds_minute DIV 60;
  145.   minuten:=zeit.ds_minute MOD 60;
  146.   sekunden:=zeit.ds_tick DIV 50;
  147. END;
  148.  
  149. PROCEDURE GetMessage(VAR wo:p_Window; VAR class,code,qual:LONG; VAR GadNum:CARDINAL); EXPORT;
  150. BEGIN
  151.   msg := p_IntuiMessage(WaitPort(wo^.UserPort));
  152.   msg := GT_GetIMsg(wo^.UserPort);
  153.   class := msg^.Class;
  154.   code := msg^.Code;
  155.   qual := msg^.Qualifier;
  156.   IF class IN [IDCMP_GADGETUP,IDCMP_GADGETDOWN] THEN
  157.   BEGIN
  158.     KlickG := msg^.IAddress;
  159.     GadNum := KlickG^.GadgetID;
  160.   END;
  161.   GT_ReplyIMsg(msg);
  162. END;
  163.  
  164. PROCEDURE ButSelecter(VAR wp:p_Window; VAR gad:p_Gadget);
  165. VAR
  166.   n : p_Gadget;
  167.   old : LONG;
  168.   dummy : BOOLEAN;
  169. BEGIN
  170.   old := wp^.IDCMPFlags;
  171.   dummy:=ModifyIDCMP(wp,IDCMP_RAWKEY);
  172.   n := gad^.NextGadget;
  173.   gad^.NextGadget := NIL;
  174.   gad^.Flags := gad^.Flags + SELECTED;
  175.   RefreshGadgets(gad,wp,NIL);
  176.   REPEAT
  177.     GetMessage(wp,class,code,qual,GadNum);
  178.   UNTIL (class = IDCMP_RAWKEY) AND ( (code AND IECODE_UP_PREFIX)=IECODE_UP_PREFIX);
  179.   dummy:=ModifyIDCMP(wp,old);
  180.   gad^.Flags := gad^.Flags - SELECTED;
  181.   RefreshGadgets(gad,wp,NIL);
  182.   gad^.NextGadget := n;
  183. END;
  184.  
  185. PROCEDURE UniPrint(VAR win:p_Window; txt:STRING; c1,c2,x,y:INTEGER; shadow,
  186.                    center : BOOLEAN; tattr:p_TextAttr);
  187. VAR
  188.   it,it1 : IntuiText;
  189.   l : LONG;
  190. BEGIN
  191.   it := IntuiText(c1,0,JAM1,1,1,tattr,txt,^it1);
  192.   it1 := IntuiText(c2,0,JAM1,0,0,tattr,txt,NIL);
  193.   l := IntuiTextLength(^it)+1;
  194.   IF center THEN x := (win^.Width-l) DIV 2;
  195.   IF shadow THEN PrintIText(win^.RPort,^it,x,y)
  196.   ELSE PrintIText(win^.RPort,^it1,x,y);
  197. END;
  198.  
  199. PROCEDURE FreeImage;
  200. BEGIN
  201.   IF (dat <> NIL) THEN FreeVec(dat);
  202.   dat := NIL;
  203. END;
  204.  
  205. FUNCTION InitImage : BOOLEAN;
  206. BEGIN
  207.    InitImage := FALSE;
  208.    dat := PTR(AllocVec(SizeOf(data),MEMF_CHIP));
  209.    IF dat = NIL THEN EXIT;
  210.     dat^ := data(
  211.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  212.         $00FF,$E000,$0000,$0000,$007F,$E000,$0000,$0000,$0000,$0000,$000F,$C000,$0000,$0000,$0000,$003F,$C000,$0000,$0000,
  213.         $0700,$1C00,$07E0,$1F00,$0F80,$1C00,$03F8,$07FF,$FFE7,$E00F,$C018,$3800,$FF00,$000F,$8000,$01C0,$3000,$0000,$0000,
  214.         $1800,$0300,$0818,$20C0,$3000,$0600,$0406,$0800,$0018,$1C30,$7010,$0401,$0380,$0010,$7800,$0600,$0C00,$0000,$0000,
  215.         $1000,$0080,$1004,$4020,$4000,$0180,$0401,$0800,$0018,$0620,$1820,$0202,$00C0,$0020,$0400,$1800,$0600,$0000,$0000,
  216.         $2000,$00C0,$1006,$4030,$4000,$00C0,$0801,$9000,$001E,$0740,$1C20,$0304,$00E0,$0040,$0600,$3000,$0300,$0000,$0000,
  217.         $4000,$0060,$100F,$C038,$8000,$0060,$0803,$D000,$003E,$0780,$3E60,$0388,$00F0,$0080,$0700,$6000,$0100,$0000,$0000,
  218.         $4000,$0030,$200F,$807C,$803E,$0030,$1003,$F000,$007E,$0380,$3E40,$0390,$00F0,$0080,$0700,$4000,$0180,$0000,$0000,
  219.         $403F,$8038,$200F,$807C,$81FF,$8038,$1003,$EFF0,$7FFC,$0300,$7CC0,$03A0,$00F0,$0102,$0780,$801C,$01C0,$0000,$0000,
  220.         $4403,$C038,$201F,$0078,$7807,$C038,$2007,$C3E0,$1FFC,$0300,$FC80,$03E0,$01F0,$0202,$0781,$003C,$01E0,$0000,$0000,
  221.         $3C03,$C03C,$401F,$00F8,$1807,$C03C,$2007,$C0E0,$1FFA,$0200,$F980,$03C0,$01F0,$0402,$0781,$007C,$03E0,$0000,$0000,
  222.         $0403,$803C,$401F,$00F8,$1007,$C07C,$200F,$8020,$1C02,$0201,$F100,$0380,$01E0,$0404,$0782,$00FF,$FFE0,$0000,$0000,
  223.         $0807,$807C,$403E,$00F0,$100F,$807C,$400F,$8040,$3E02,$0003,$F100,$0300,$01E0,$0804,$0782,$01F8,$FFE0,$0000,$0000,
  224.         $0806,$007C,$403E,$01F0,$200E,$00FC,$400F,$0040,$3E01,$0003,$E200,$0300,$01E0,$100C,$0784,$01FF,$FF80,$0000,$0000,
  225.         $0800,$00F8,$803E,$01E0,$2000,$00F8,$C01F,$0040,$3E01,$0007,$C202,$0202,$01E0,$F00C,$0784,$03C0,$0300,$0000,$0000,
  226.         $1000,$01F8,$807C,$03E0,$2000,$01F8,$801E,$0080,$7C01,$000F,$C402,$0202,$01E1,$0000,$0784,$0380,$0380,$0000,$0000,
  227.         $1010,$03F0,$807C,$03C0,$4000,$07F0,$803E,$0080,$7C01,$000F,$8402,$0202,$03E2,$0000,$0788,$0780,$0380,$0000,$0000,
  228.         $2010,$07F1,$007C,$03C0,$4000,$1FE1,$003E,$0080,$7C00,$801F,$0402,$0006,$03C2,$0000,$0788,$0700,$07C0,$0000,$0000,
  229.         $2010,$1FE1,$00F8,$07C0,$C000,$7FC1,$003C,$0100,$F800,$803F,$0806,$000C,$03C6,$0000,$0788,$0700,$07C0,$0000,$0000,
  230.         $2018,$7F81,$00F8,$0780,$8000,$3F01,$007C,$0100,$F800,$803E,$0806,$001C,$03C4,$0008,$0788,$0700,$1FC0,$0000,$0000,
  231.         $401F,$FF01,$00F0,$0F80,$8040,$1C02,$0078,$0100,$F001,$007C,$1806,$001C,$03C4,$0008,$0788,$07C0,$1FC0,$0000,$0000,
  232.         $403F,$FC01,$0000,$0F01,$0040,$1802,$0078,$0201,$F002,$00FC,$100E,$003C,$03C2,$00F8,$0788,$0380,$3F80,$0000,$0000,
  233.         $403C,$F000,$8000,$1F01,$0060,$0C02,$00F8,$0201,$F006,$00F8,$100E,$0078,$03C4,$01F8,$0F84,$0000,$7E00,$0000,$0000,
  234.         $403C,$0000,$8000,$3F01,$00F0,$0604,$00F0,$0201,$E004,$01F0,$201E,$00F8,$07C4,$03F8,$0F84,$0000,$FC00,$0000,$0000,
  235.         $807C,$0000,$4000,$3E02,$00F8,$0604,$00F0,$0403,$E008,$03F0,$201E,$00F8,$0788,$03E8,$0F82,$0001,$F800,$0000,$0000,
  236.         $8078,$0000,$3000,$FC02,$00F8,$0304,$01F0,$0403,$E008,$03E0,$201E,$01F8,$0788,$07C8,$0F01,$8003,$F800,$0000,$0000,
  237.         $6078,$0000,$0E03,$FC01,$81F4,$0103,$01E0,$0207,$C006,$07C0,$183F,$03FC,$0F87,$0FC8,$0F00,$601F,$F000,$0000,$0000,
  238.         $3FF8,$0000,$07FF,$F800,$7FE4,$0180,$FFE0,$01FF,$C001,$FFC0,$0FFE,$FFE3,$FF81,$FF87,$FF00,$3FFF,$C000,$0000,$0000,
  239.         $0FF0,$0000,$01FF,$E000,$3FE2,$03C0,$3FE0,$007F,$C000,$FF80,$03FC,$3FC0,$FF80,$7F01,$FF00,$0FFF,$8000,$0000,$0000,
  240.         $03F0,$0000,$007F,$8000,$07C1,$DFE0,$0FC0,$001F,$8000,$3F00,$00F8,$0F80,$3F00,$1E00,$FE00,$01FC,$0000,$0000,$0000,
  241.         $0000,$0000,$0000,$0000,$0000,$3FC0,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  242.         $0000,$0000,$0000,$0000,$0000,$1F00,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  243.         $0000,$0000,$0000,$0000,$0000,$0C00,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  244.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  245.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0880,$0000,$0000,$0000,$0000,
  246.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0040,$8100,$0000,$4000,$0000,$9980,$0000,$0002,$0002,$0400,
  247.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$00C0,$0000,$0000,$0000,$0321,$8000,$0000,$E800,$0000,$0000,
  248.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0054,$1000,$4080,$0000,$0088,$0060,$0002,$0000,$0800,$0001,$0200,
  249.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0054,$7040,$C18C,$8900,$6488,$0000,$8C8E,$1200,$0193,$2643,$0632,
  250.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0054,$C040,$8100,$9900,$4488,$0320,$8898,$3200,$C932,$2442,$0402,
  251.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0004,$8040,$810F,$9100,$4408,$0220,$8890,$2200,$0902,$2442,$043E,
  252.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0004,$8040,$0000,$1100,$0408,$0020,$8090,$2200,$0812,$2040,$0000,
  253.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$00AC,$8040,$4081,$9100,$0CC8,$0060,$8190,$2200,$1832,$20C1,$0206,
  254.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$00A9,$80C0,$C18F,$3300,$F808,$07C0,$8F30,$6600,$F1E6,$6783,$063C,
  255.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0018,$0001,$8000,$0000,$0000,$0000,$0000,
  256.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$00F0,$0007,$0000,$0000,$0000,$0000,$0000,
  257.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  258.     { Plane 1 }
  259.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  260.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  261.         $00FF,$E000,$0000,$0000,$007F,$E000,$0000,$0000,$0000,$0000,$0007,$C000,$0000,$0000,$0000,$003F,$C000,$0000,$0000,
  262.         $07FF,$FC00,$07E0,$1F00,$0FFF,$F800,$03F8,$07FF,$FFE7,$E00F,$800F,$F800,$FC00,$000F,$8000,$01FF,$F000,$0000,$0000,
  263.         $0FFF,$FF00,$0FF8,$3FC0,$3FFF,$FE00,$03FE,$07FF,$FFE7,$F81F,$E01F,$FC01,$FF00,$001F,$F800,$07FF,$F800,$0000,$0000,
  264.         $1FFF,$FF00,$0FF8,$3FC0,$3FFF,$FF00,$07FE,$0FFF,$FFE1,$F83F,$E01F,$FC03,$FF00,$003F,$F800,$0FFF,$FC00,$0000,$0000,
  265.         $3FFF,$FF80,$0FF0,$3FC0,$7FFF,$FF80,$07FC,$0FFF,$FFC1,$F87F,$C01F,$FC07,$FF00,$007F,$F800,$1FFF,$FE00,$0000,$0000,
  266.         $3FFF,$FFC0,$1FF0,$7F80,$7FC1,$FFC0,$0FFC,$0FFF,$FF81,$FC7F,$C03F,$FC0F,$FF00,$007F,$F800,$3FFF,$FE00,$0000,$0000,
  267.         $3FC0,$7FC0,$1FF0,$7F80,$7E00,$7FC0,$0FFC,$000F,$8003,$FCFF,$803F,$FC1F,$FF00,$00FD,$F800,$7FE3,$FE00,$0000,$0000,
  268.         $3BFC,$3FC0,$1FE0,$FF80,$07F8,$3FC0,$1FF8,$001F,$E003,$FCFF,$007F,$FC1F,$FE00,$01FD,$F800,$FFC3,$FE00,$0000,$0000,
  269.         $03FC,$3FC0,$3FE0,$FF00,$07F8,$3FC0,$1FF8,$001F,$E001,$FDFF,$007F,$FC3F,$FE00,$03FD,$F800,$FF83,$FC00,$0000,$0000,
  270.         $03FC,$7FC0,$3FE0,$FF00,$0FF8,$3F80,$1FF0,$001F,$E001,$FDFE,$00FF,$FC7F,$FE00,$03FB,$F801,$FF00,$0000,$0000,$0000,
  271.         $07F8,$7F80,$3FC1,$FF00,$0FF0,$7F80,$3FF0,$003F,$C001,$FFFC,$00FF,$FCFF,$FE00,$07FB,$F801,$FE07,$0000,$0000,$0000,
  272.         $07F9,$FF80,$3FC1,$FE00,$1FF1,$FF00,$3FF0,$003F,$C000,$FFFC,$01FF,$FCFF,$FE00,$0FF3,$F803,$FE00,$0000,$0000,$0000,
  273.         $07FF,$FF00,$7FC1,$FE00,$1FFF,$FF00,$3FE0,$003F,$C000,$FFF8,$01FD,$FDFD,$FE00,$0FF3,$F803,$FC3F,$FC00,$0000,$0000,
  274.         $0FFF,$FE00,$7F83,$FC00,$1FFF,$FE00,$7FE0,$007F,$8000,$FFF0,$03FD,$FDFD,$FE00,$FFFF,$F803,$FC7F,$FC00,$0000,$0000,
  275.         $0FEF,$FC00,$7F83,$FC00,$3FFF,$F800,$7FC0,$007F,$8000,$FFF0,$03FD,$FDFD,$FC01,$FFFF,$F807,$F87F,$FC00,$0000,$0000,
  276.         $1FEF,$F800,$FF83,$FC00,$3FFF,$E000,$FFC0,$007F,$8000,$7FE0,$03FD,$FFF9,$FC01,$FFFF,$F807,$F8FF,$F800,$0000,$0000,
  277.         $1FEF,$E000,$FF07,$F800,$3FFF,$8000,$FFC0,$00FF,$0000,$7FC0,$07F9,$FFF3,$FC01,$FFFF,$F807,$F8FF,$F800,$0000,$0000,
  278.         $1FE7,$8000,$FF07,$F800,$7FFF,$C000,$FF80,$00FF,$0000,$7FC0,$07F9,$FFE3,$FC03,$FFF7,$F807,$F8FF,$E000,$0000,$0000,
  279.         $3FE0,$0000,$FF0F,$F000,$7FBF,$E001,$FF80,$00FF,$0000,$FF80,$07F9,$FFE3,$FC03,$FFF7,$F807,$F83F,$E000,$0000,$0000,
  280.         $3FC0,$0000,$FFFF,$F000,$FFBF,$E001,$FF80,$01FE,$0001,$FF00,$0FF1,$FFC3,$FC01,$FF07,$F807,$FC7F,$C000,$0000,$0000,
  281.         $3FC0,$0000,$7FFF,$E000,$FF9F,$F001,$FF00,$01FE,$0001,$FF00,$0FF1,$FF87,$FC03,$FE07,$F003,$FFFF,$8000,$0000,$0000,
  282.         $3FC0,$0000,$7FFF,$C000,$FF0F,$F803,$FF00,$01FE,$0003,$FE00,$1FE1,$FF07,$F803,$FC07,$F003,$FFFF,$0000,$0000,$0000,
  283.         $7F80,$0000,$3FFF,$C001,$FF07,$F803,$FF00,$03FC,$0007,$FC00,$1FE1,$FF07,$F807,$FC07,$F001,$FFFE,$0000,$0000,$0000,
  284.         $7F80,$0000,$0FFF,$0001,$FF07,$FC03,$FE00,$03FC,$0007,$FC00,$1FE1,$FE07,$F807,$F807,$F000,$7FFC,$0000,$0000,$0000,
  285.         $1F80,$0000,$01FC,$0000,$7E03,$FE00,$FE00,$01F8,$0001,$F800,$07C0,$FC03,$F000,$F007,$F000,$1FE0,$0000,$0000,$0000,
  286.         $0000,$0000,$0000,$0000,$0003,$FE00,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  287.         $0000,$0000,$0000,$0000,$0001,$FC00,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  288.         $0000,$0000,$0000,$0000,$0000,$2000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  289.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  290.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  291.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  292.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$3300,$0000,$0000,$0000,$0000,
  293.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0183,$0600,$0001,$8000,$0F83,$3300,$0001,$E00C,$000C,$1800,
  294.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0183,$0600,$0001,$8000,$0FC3,$0000,$0003,$F00C,$000C,$1800,
  295.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01AB,$6007,$8F1E,$6C01,$F330,$0CC0,$1E6C,$D803,$13CF,$8F1E,$3C78,
  296.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01AB,$E187,$8F3F,$7E01,$FB30,$0F83,$3F7C,$FC03,$E7EF,$DF9E,$3CFC,
  297.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01AB,$8183,$0633,$7601,$9B30,$0FC3,$3370,$EC01,$F66C,$D98C,$18CC,
  298.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01AB,$0183,$063F,$6601,$9B30,$0CC3,$3360,$CC00,$360C,$D98C,$18FC,
  299.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01FB,$0183,$0630,$6601,$9BF0,$0CC3,$3360,$CC03,$366C,$D98C,$18C0,
  300.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01FB,$0183,$873F,$6601,$F9F0,$0FC3,$3F60,$CC03,$F7EC,$DF8E,$1CFC,
  301.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0153,$0181,$831E,$6601,$F230,$0F9B,$1E60,$CC01,$E3CC,$CF06,$0C78,
  302.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$03F0,$001F,$0000,$0000,$0000,$0000,$0000,
  303.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$01E0,$000E,$0000,$0000,$0000,$0000,$0000,
  304.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,
  305.         $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000);
  306.   TitelImage := Image(0,0,304,47,2,dat,$03,$00,NIL);
  307.   InitImage := TRUE;
  308. END;
  309.  
  310. PROCEDURE RemAppIcon; 
  311. VAR
  312.   dummy : BOOLEAN;
  313. BEGIN
  314.   IF MyAppIcon<>NIL THEN dummy := RemoveAppIcon(MyAppIcon);
  315.   IF AppPort<>NIL THEN
  316.   BEGIN
  317.     AppMsg := p_AppMessage(GetMsg(AppPort));
  318.     WHILE AppMsg<>NIL DO
  319.     BEGIN
  320.       ReplyMsg(p_Message(AppMsg));
  321.       AppMsg := p_AppMessage(GetMsg(AppPort));
  322.     END;
  323.     DeleteMsgPort(AppPort);
  324.   END;
  325. END;
  326.  
  327. PROCEDURE Cls;
  328. BEGIN
  329.   SetRast(rp, 0);
  330. END;
  331.  
  332. PROCEDURE RemoveG;
  333. VAR
  334.   ok : WORD;
  335. BEGIN
  336.   IF wp^.FirstGadget <> NIL THEN
  337.   ok := RemoveGList(wp,wp^.FirstGadget,-1);
  338. END;
  339.  
  340. PROCEDURE SetFarben;
  341. BEGIN
  342.   SetRGB4(vp,0,10,10,10);
  343.   SetRGB4(vp,1, 0, 0, 0);
  344.   SetRGB4(vp,2,15,15,15);
  345.   SetRGB4(vp,3, 6, 7, 9);
  346. END;
  347.  
  348. PROCEDURE Set0;
  349. VAR
  350.   i : INTEGER;
  351. BEGIN
  352.   FOR i:=1 To 3 DO SetRGB4(vp,i,10,10,10);
  353. END;
  354.  
  355. PROCEDURE CloseStuff;
  356. VAR
  357.   dummy : BOOLEAN;
  358. BEGIN
  359.   IF (wp<>NIL) THEN CloseWindow(wp);
  360.   wp := NIL;
  361.   IF (vi<>NIL) THEN FreeVisualInfo(vi);
  362.   vi := NIL;
  363.   IF (sp<>NIL) THEN dummy := CloseScreen(sp);
  364.   sp := NIL;
  365.   IF gl<>NIL THEN FreeGadgets(gl);
  366.   gl := NIL;
  367. END;
  368.  
  369. PROCEDURE Neu(VAR dl:p_List; txt:STR);
  370. VAR
  371.   n : p_Node;
  372. BEGIN
  373.   New(n);
  374.   {n^.ln_succ := NIL;
  375.   n^.ln_pred := NIL;}
  376.   n^.ln_name := PTR(AllocVec(Length(txt)+1,MEMF_ANY));
  377.   IF PTR(n^.ln_name) = NIL THEN EXIT;
  378.   CopyMem(PTR(txt),PTR(n^.ln_name),Length(txt)+1);
  379.   AddTail(dl,n);
  380. END;
  381.  
  382. PROCEDURE FreeAList(VAR dl:p_List);
  383. VAR
  384.   n,ne : p_Node;
  385. BEGIN
  386.   IF dl=NIL THEN EXIT;
  387.   n := dl^.lh_head;
  388.   WHILE n^.ln_succ <> NIL DO
  389.   BEGIN
  390.     ne := n^.ln_succ;
  391.     FreeVec(PTR(n^.ln_name));
  392.     Dispose(n);
  393.     n := ne;
  394.   END;
  395.   Dispose(dl);
  396. END;
  397.  
  398. PROCEDURE UserMeldung(why:STRING);
  399. VAR l : LONG;
  400. BEGIN
  401.   es := EasyStruct(SizeOf(EasyStruct),0,"PurityMag: Fehlermeldung",why,"OK");
  402.   l := EasyRequestArgs(NIL,^es,NIL,NIL);
  403. END;
  404.  
  405. PROCEDURE AsdaLaVista(why:STRING; rc:INTEGER); EXPORT;
  406. VAR
  407.   ok,it:IntuiText;
  408.   l:LONG;
  409. BEGIN
  410.   CloseStuff;
  411.   IF (fh<>0) THEN l := DosClose(fh);
  412.   RemAppIcon;
  413.   IF AppObj<>NIL THEN FreeDiskObject(AppObj);
  414.   IF gl<>NIL THEN FreeGadgets(gl);
  415.   IF vi<>NIL THEN FreeVisualInfo(vi);
  416.   IF why<>"" THEN UserMeldung(why)
  417.   IF (WorkbenchBase <> NIL) THEN CloseLibrary(WorkbenchBase);
  418.   IF (GadToolsBase <> NIL) THEN CloseLibrary(GadToolsBase);
  419.   IF (ÜberList <> NIL) THEN FreeAList(ÜberList);
  420.   IF (HilfeList <> NIL) THEN FreeAList(HilfeList);
  421.   FreeImage;
  422.   Halt(rc);
  423. END;
  424.  
  425. PROCEDURE InitAppIcon;
  426. BEGIN
  427.   MyAppIcon := NIL;
  428.   AppPort := CreateMsgPort;
  429.   IF AppPort = NIL THEN AsdaLaVista(NoAppPort,20);
  430. END;
  431.  
  432. PROCEDURE StartVonWorkbench;
  433. VAR
  434.   FName       : STR;
  435.   OldLock     : BPTR;
  436. BEGIN
  437.   StMess := StartupMessage;
  438.   FName := StMess^.sm_ArgList^.wa_Name;
  439.   OldLock := CurrentDir( StMess^.sm_ArgList^.wa_Lock);
  440.   AppObj := GetDiskObject( FName );  { Icon laden }
  441.   IF AppObj<>NIL THEN
  442.   BEGIN
  443.     s := FindToolType(AppObj^.do_ToolTypes,"PNUMMER");
  444.     IF s<>"" THEN pnummer := s;
  445.     s := FindToolType(AppObj^.do_ToolTypes,"LMZ_AUFRUF");
  446.     IF s<>"" THEN
  447.     BEGIN
  448.       lies_mich_zuerst := s;
  449.       lmz := TRUE;
  450.     END;
  451.     s := FindToolType(AppObj^.do_ToolTypes,"PCQ_CONFIG");
  452.     IF s<>"" THEN pcqconf := s;
  453.     s := FindToolType(AppObj^.do_ToolTypes,"ANL_CONFIG");
  454.     IF s<>"" THEN anlconf := s;
  455.     s := FindToolType(AppObj^.do_ToolTypes,"ALLG_CONFIG");
  456.     IF s<>"" THEN allconf := s;
  457.     s := FindToolType(AppObj^.do_ToolTypes,"KICK_CONFIG");
  458.     IF s<>"" THEN kickconf := s;
  459.     s := FindToolType(AppObj^.do_ToolTypes,"HSPAS_CONFIG");
  460.     IF s<>"" THEN hsconf := s;
  461.     s := FindToolType(AppObj^.do_ToolTypes,"FORUM_CONFIG");
  462.     IF s<>"" THEN forumconf := s;
  463.     s := FindToolType(AppObj^.do_ToolTypes,"WINDOW");
  464.     IF s<>"" THEN ConWin := s;
  465.     AppObj^.do_CurrentX := NO_ICON_POSITION;
  466.     AppObj^.do_CurrentY := NO_ICON_POSITION;
  467.   END;
  468. END;
  469.  
  470.  
  471. PROCEDURE Schriftzug;
  472. BEGIN
  473.   DrawImage(wp^.RPort,^TitelImage,(wp^.Width-TitelImage.Width) DIV 2,
  474.             (92-TitelImage.Height) DIV 2);
  475.   SetAPen(rp,3);
  476.   RectFill(rp,0,0,wp^.Width-1,8);
  477.   RectFill(rp,0,0,20,100);
  478.   RectFill(rp,0,92,wp^.Width-1,100);
  479.   RectFill(rp,wp^.Width-20,0,wp^.Width-1,100);
  480.   SetAPen(rp,1);
  481.   Move(rp,0,0);
  482.   Draw(rp,0,100);
  483.   Draw(rp,wp^.Width-1,100);
  484.   Draw(rp,wp^.Width-1,0);
  485.   Draw(rp,0,0);
  486.   Move(rp,20,8);
  487.   Draw(rp,20,92);
  488.   Draw(rp,wp^.Width-20,92);
  489.   Draw(rp,wp^.Width-20,8);
  490.   Draw(rp,20,8);
  491. END;
  492.  
  493. PROCEDURE LetsGadget;
  494. BEGIN
  495.   xpos:=(wp^.Width-600) div 2;
  496.   x1:=xpos+200;
  497.   x2:=xpos+400;
  498.   IF gl <> NIL THEN FreeGadgets(gl);
  499.   gl := NIL;
  500.   gl := CreateContext(^gl);
  501.   IF gl = NIL THEN EXIT;
  502.  
  503.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  504.   ta[2].ti_Tag := TAG_DONE;
  505.   ng := NewGadget(xpos,120,200,14,
  506.                   "_Info",^tattr,
  507.                   1,PLACETEXT_IN,
  508.                   vi,NIL);
  509.   mgad[1] := CreateGadgetA(BUTTON_KIND,gl,^ng,^ta);
  510.   ng := NewGadget(x1,120,200,14,
  511.                   "_Forum",^tattr,
  512.                   2,PLACETEXT_IN,
  513.                   vi,NIL);
  514.   IF foru = FALSE THEN
  515.   BEGIN
  516.     ta[2] := TagItem(GA_Disabled, 1);
  517.     ta[3].ti_Tag := TAG_DONE;
  518.   END;
  519.   mgad[2] := CreateGadgetA(BUTTON_KIND,mgad[1],^ng,^ta);
  520.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  521.   ta[2].ti_Tag := TAG_DONE;
  522.   ng := NewGadget(x2,120,200,14,
  523.                   "_Allgemeines",^tattr,
  524.                   3,PLACETEXT_IN,
  525.                   vi,NIL);
  526.   IF all = FALSE THEN
  527.   BEGIN
  528.     ta[2] := TagItem(GA_Disabled, 1);
  529.     ta[3].ti_Tag := TAG_DONE;
  530.   END;
  531.   mgad[3] := CreateGadgetA(BUTTON_KIND,mgad[2],^ng,^ta);
  532.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  533.   ta[2].ti_Tag := TAG_DONE;
  534.   ng := NewGadget(xpos,135,200,14,
  535.                   "_PCQ-Programme",^tattr,
  536.                   4,PLACETEXT_IN,
  537.                   vi,NIL);
  538.   IF pcq = FALSE THEN
  539.   BEGIN
  540.     ta[2] := TagItem(GA_Disabled, 1);
  541.     ta[3].ti_Tag := TAG_DONE;
  542.   END;
  543.   mgad[4] := CreateGadgetA(BUTTON_KIND,mgad[3],^ng,^ta);
  544.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  545.   ta[2].ti_Tag := TAG_DONE;
  546.   ng := NewGadget(x1,135,200,14,
  547.                   "_KickPascal-Programme",^tattr,
  548.                   5,PLACETEXT_IN,
  549.                   vi,NIL);
  550.   IF kick = FALSE THEN
  551.   BEGIN
  552.     ta[2] := TagItem(GA_Disabled, 1);
  553.     ta[3].ti_Tag := TAG_DONE;
  554.   END;
  555.   mgad[5] := CreateGadgetA(BUTTON_KIND,mgad[4],^ng,^ta);
  556.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  557.   ta[2].ti_Tag := TAG_DONE;
  558.   ng := NewGadget(x2,135,200,14,
  559.                   "_HSPascal-Programme",^tattr,
  560.                   6,PLACETEXT_IN,
  561.                   vi,NIL);
  562.   IF news = FALSE THEN
  563.   BEGIN
  564.     ta[2] := TagItem(GA_Disabled, 1);
  565.     ta[3].ti_Tag := TAG_DONE;
  566.   END;
  567.   mgad[6] := CreateGadgetA(BUTTON_KIND,mgad[5],^ng,^ta);
  568.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  569.   ta[2].ti_Tag := TAG_DONE;
  570.   ng := NewGadget(xpos,150,200,14,
  571.                   "An_leitungen",^tattr,
  572.                   7,PLACETEXT_IN,
  573.                   vi,NIL);
  574.   IF anl = FALSE THEN
  575.   BEGIN
  576.     ta[2] := TagItem(GA_Disabled, 1);
  577.     ta[3].ti_Tag := TAG_DONE;
  578.   END;
  579.   mgad[7] := CreateGadgetA(BUTTON_KIND,mgad[6],^ng,^ta);
  580.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  581.   ta[2].ti_Tag := TAG_DONE;
  582.   ng := NewGadget(x1,150,200,14,
  583.                   "_Beenden",^tattr,
  584.                   8,PLACETEXT_IN,
  585.                   vi,NIL);
  586.   mgad[8] := CreateGadgetA(BUTTON_KIND,mgad[7],^ng,^ta);
  587.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  588.   ta[2].ti_Tag := TAG_DONE;
  589.   ng := NewGadget(x2,150,200,14,
  590.                   "Lie_s mich zuerst!",^tattr,
  591.                   9,PLACETEXT_IN,
  592.                   vi,NIL);
  593.   IF lmz = FALSE THEN
  594.   BEGIN
  595.     ta[2] := TagItem(GA_Disabled, 1);
  596.     ta[3].ti_Tag := TAG_DONE;
  597.   END;
  598.   mgad[9] := CreateGadgetA(BUTTON_KIND,mgad[8],^ng,^ta);
  599.   ng := NewGadget((wp^.Width-320) DIV 2,185,320,13,
  600.                   NIL,^tattr,
  601.                   10,0,
  602.                   vi,NIL);
  603.   ta[1] := TagItem(GTTX_Border,1);
  604.   ta[2].ti_Tag := TAG_DONE;
  605.   mgad[10] := CreateGadgetA(TEXT_KIND,mgad[9],^ng,^ta);
  606.   { Titelbild ausgeben }
  607.   Schriftzug;
  608.   UniPrint(wp,"- Willkommen zur Purity Nr. "+pnummer+" -",1,2,0,105,
  609.            TRUE,TRUE,^tattr);
  610.   UniPrint(wp,version,1,2,0,244,TRUE,TRUE,^tattr);
  611.   UniPrint(wp,"Anleitung zum PurityMag: <HELP>-Taste drücken !",1,2,0,170,
  612.            TRUE,TRUE,^tattr);
  613.   { IntuiText-Strukturen definieren: }
  614.   FOR i:=1 To 10 DO aok := AddGadget(wp,mgad[i],0);
  615.   RefreshGadgets(wp^.FirstGadget,wp,NIL);
  616. END;
  617.  
  618.  
  619. {*********************************************************
  620.  ** Öffnen des Screens und des Windows.                 **
  621.  ** Die Auflösung der Workbench wird auch übernommen.   **
  622.  *********************************************************}
  623. PROCEDURE OpenStuff;
  624. BEGIN
  625.   tattr := TextAttr("topaz.font",8,0,0);
  626.   ps := LockPubScreen("Workbench");
  627.   IF ps<>NIL THEN
  628.   BEGIN
  629.     vp := ^ps^.ViewPort;
  630.     modee := GetVPModeID(vp);
  631.     Breite := ps^.Width;
  632.     Höhe := ps^.Height;
  633.     xoff := ps^.WBorLeft;
  634.     yoff := ps^.BarHeight;
  635.     IF Höhe < 256 THEN Höhe := 256;
  636.     le := ps^.LeftEdge;
  637.     te := ps^.TopEdge;
  638.     UnLockPubScreen(NIL, ps);
  639.   END ELSE AsdaLaVista(NoWBLock,20);
  640.   Pens[1] := -1;
  641.   ta[1] := TagItem(SA_Left, le);
  642.   ta[2] := TagItem(SA_Top, te);
  643.   ta[3] := TagItem(SA_Width, Breite);
  644.   ta[4] := TagItem(SA_Height, Höhe);
  645.   ta[5] := TagItem(SA_Depth, 2);
  646.   ta[6] := TagItem(SA_Type, CUSTOMSCREEN);
  647.   ta[7] := TagItem(SA_DisplayID, modee);
  648.   ta[8] := TagItem(SA_DetailPen, 1);
  649.   ta[9] := TagItem(SA_BlockPen, 2);
  650.   ta[10]:= TagItem(SA_Overscan,OSCAN_STANDARD);
  651.   ta[11]:= TagItem(SA_AutoScroll, LONG(TRUE));
  652.   ta[12]:= TagItem(SA_Font, LONG(^tattr));
  653.   ta[13]:= TagItem(SA_Pens, LONG(^Pens));
  654.   ta[14].ti_Tag := TAG_DONE;
  655.   sp := OpenScreenTagList(NIL,^ta);
  656.   IF sp=NIL THEN AsdaLaVista(NoScr, 20);
  657.   vi := GetVisualInfoA(sp, NIL);
  658.   IF vi = NIL THEN AsdaLaVista(NoVi, 20);
  659.   vp := ^sp^.ViewPort;
  660.   SetFarben;
  661.   ta[1] := TagItem(WA_Left, 0);
  662.   ta[2] := TagItem(WA_Top, 0);
  663.   ta[3] := TagItem(WA_Width,Breite);
  664.   ta[4] := TagItem(WA_Height,Höhe);
  665.   ta[5] := TagItem(WA_IDCMP,idcmp);
  666.   ta[6] := TagItem(WA_Flags,flags);
  667.   ta[7] := TagItem(WA_DetailPen,0);
  668.   ta[8] := TagItem(WA_BlockPen,1);
  669.   ta[9] := TagItem(WA_CustomScreen, LONG(sp));
  670.   wp := OpenWindowTagList(NIL,^ta);
  671.   IF wp = NIL THEN AsdaLaVista(NoWin, 20);
  672.   rp := wp^.RPort;
  673.   SetRast(rp, 0);
  674.   maxy := sp^.Height - 16;
  675. END;
  676.  
  677. {$path"RAM:Pascal/PurityMag","Sources:PurityMag/"}
  678. {$incl"Rubriken.h"}
  679.  
  680. PROCEDURE Über;
  681. LABEL ÜberEnde;
  682. VAR
  683.   win : p_Window;
  684.   gad, gad1 : p_Gadget;
  685.   ok : BOOLEAN;
  686. BEGIN
  687.   g := NIL;
  688.   g := CreateContext(^g);
  689.   IF g = NIL THEN EXIT;
  690.   New(ÜberList);
  691.   ÜberList^.lh_head := NIL;
  692.   ÜberList^.lh_tail := NIL;
  693.   überList^.lh_TailPred := NIL;
  694.   NewList(ÜberList);
  695.   Neu(ÜberList,"PurityMag II");
  696.   Neu(ÜberList,"");
  697.   Neu(ÜberList,"©1993/94 by Björn Schotte");
  698.   Neu(ÜberList,"            Am Burkardstuhl 45");
  699.   Neu(ÜberList,"            D-97267 Himmelstadt");
  700.   Neu(ÜberList,"");
  701.   Neu(ÜberList,"EMail (UseNet) :");
  702.   Neu(ÜberList,"schotte@incubus.sub.org oder");
  703.   Neu(ÜberList,"BomberSoft@bomber.mayn.sub.de");
  704.   Neu(ÜberList,"");
  705.   Neu(ÜberList,"written in MAXONPascal III");
  706.   Neu(ÜberList,"");
  707.   Neu(ÜberList,"GreetinX/ThanX to/for:");
  708.   Neu(ÜberList,"");
  709.   Neu(ÜberList,"Diesel for the Puritys,");
  710.   Neu(ÜberList,"Michael Klein,");
  711.   Neu(ÜberList,"Andreas Neumann,");
  712.   Neu(ÜberList,"PackMAN,");
  713.   Neu(ÜberList,"Rainer Behrens (RabeSoft),");
  714.   Neu(ÜberList,"");
  715.   Neu(ÜberList,"an all the others of");
  716.   Neu(ÜberList,"the P.U.R.I.T.Y. !!!");
  717.   Neu(ÜberList,"");
  718.   Neu(ÜberList,"   _");
  719.   Neu(ÜberList,"_ // ONLY Amiga makes it possible !!");
  720.   Neu(ÜberList,"\X/");
  721.   ta[1] := TagItem(GTLV_Labels, LONG(ÜberList));
  722.   ta[2] := TagItem(GTLV_ReadOnly, 1);
  723.   ta[3].ti_Tag := TAG_DONE;
  724.   ng := NewGadget(xoff+1,yoff+1, 298, 80,
  725.                   NIL,^tattr,
  726.                   1,0,
  727.                   vi,NIL);
  728.   gad := CreateGadgetA(LISTVIEW_KIND,g,^ng,^ta);
  729.   IF gad = NIL THEN GOTO ÜberEnde;
  730.   ta[1] := TagItem(GT_Underscore, LONG("_"));
  731.   ta[2].ti_Tag := TAG_DONE;
  732.   ng := NewGadget(xoff+1,yoff+82,298,14,
  733.                   "_Weiter",^tattr,
  734.                   2,0,
  735.                   vi,NIL);
  736.   gad1 := CreateGadgetA(BUTTON_KIND,gad,^ng,^ta);
  737.   ta[1] := TagItem(WA_Left, (wp^.Width - (300+2*xoff)) DIV 2);
  738.   ta[2] := TagItem(WA_Top, (wp^.Height - 100) DIV 2);
  739.   ta[3] := TagItem(WA_Flags, WFLG_DRAGBAR+WFLG_CLOSEGADGET+
  740.                              WFLG_ACTIVATE+WFLG_NOCAREREFRESH+
  741.                              WFLG_SMART_REFRESH);
  742.   ta[4] := TagItem(WA_Idcmp, IDCMP_MOUSEBUTTONS+IDCMP_MOUSEMOVE+
  743.                              IDCMP_INTUITICKS+IDCMP_GADGETUP+
  744.                              IDCMP_GADGETDOWN+IDCMP_CLOSEWINDOW+
  745.                              IDCMP_RAWKEY);
  746.   ta[5].ti_Tag := WA_Title;
  747.   ta[5].ti_data := "Information";
  748.   ta[6] := TagItem(WA_CustomScreen, LONG(sp));
  749.   ta[7] := TagItem(WA_Gadgets, LONG(g));
  750.   ta[8] := TagItem(WA_InnerWidth, 300);
  751.   ta[9] := TagItem(WA_InnerHeight, 100);
  752.   ta[10].ti_Tag := TAG_DONE;
  753.   win := OpenWindowTagList(NIL,^ta);
  754.   IF win <> NIL THEN
  755.   BEGIN
  756.     GT_RefreshWindow(win,NIL);
  757.     ok := FALSE;
  758.     REPEAT
  759.       msg := p_IntuiMessage(WaitPort(win^.UserPort));
  760.       msg := GT_GetIMsg(win^.UserPort);
  761.       class := msg^.Class;
  762.       code := msg^.Code;
  763.       IF class IN [IDCMP_GADGETUP, IDCMP_GADGETDOWN] THEN
  764.       BEGIN
  765.         KlickG := msg^.IAddress;
  766.         GadNum := KlickG^.GadgetID;
  767.       END;
  768.       GT_ReplyIMsg(msg);
  769.       CASE class OF
  770.         IDCMP_CLOSEWINDOW : ok := TRUE;
  771.         IDCMP_GADGETUP: IF GadNum = 2 THEN ok := TRUE;
  772.         IDCMP_RAWKEY:
  773.           CASE code OF
  774.             69 : ok := TRUE;
  775.             $11: BEGIN
  776.                    ButSelecter(win,gad1);
  777.                    ok := TRUE;
  778.                  END;
  779.           ELSE END; 
  780.       ELSE END;
  781.     UNTIL ok;
  782.     CloseWindow(win);
  783.   END;
  784. ÜberEnde:
  785.   FreeGadgets(g);
  786.   FreeAList(ÜberList);
  787.   ÜberList := NIL;
  788. END;
  789.  
  790. PROCEDURE time;
  791. VAR
  792.   it : IntuiText;
  793.   x,b  : INTEGER;
  794. BEGIN
  795.   uhrzeit(std,min,sek);
  796.   stdd:=IntStr(std); minn:=IntStr(min); sekk:=IntStr(sek);
  797.   IF std<10 THEN stdd:="0"+stdd;
  798.   IF min<10 THEN minn:="0"+minn;
  799.   IF sek<10 THEN sekk:="0"+sekk;
  800.   total_mem := AvailMem(0);
  801.   total_mem_string := IntStr(total_mem);
  802.   IF (total_mem < 10) THEN
  803.     total_mem_string := "       "+total_mem_string
  804.   ELSE IF (total_mem>=10) AND (total_mem<100) THEN
  805.     total_mem_string := "      "+total_mem_string
  806.   ELSE IF (total_mem>=100) AND (total_mem<1000) THEN
  807.     total_mem_string := "     "+total_mem_string
  808.   ELSE IF (total_mem>=1000) AND (total_mem<10000) THEN
  809.     total_mem_string := "    "+total_mem_string
  810.   ELSE IF (total_mem>=10000) AND (total_mem<100000) THEN
  811.     total_mem_string := "   "+total_mem_string
  812.   ELSE IF (total_mem>=100000) AND (total_mem<1000000) THEN
  813.     total_mem_string := "  "+total_mem_string
  814.   ELSE IF (total_mem>=1000000) AND (total_mem<10000000) THEN
  815.     total_mem_string := " "+total_mem_string;
  816.   buff:="ZEIT: "+stdd+":"+minn+":"+sekk;
  817.   buff := buff+ " · TOTAL MEMORY: "+total_mem_string;
  818.   IF buff<>buff1 THEN
  819.   BEGIN
  820.     ta[1] := TagItem(GTTX_Text, LONG(^buff));
  821.     ta[2].ti_Tag := TAG_DONE;
  822.     GT_SetGadgetAttrsA(mgad[10],wp,NIL,^ta);
  823.     buff1:=buff;
  824.   END;
  825. END;
  826.  
  827.  
  828. PROCEDURE ReadC(name:STRING;VAR bool:BOOLEAN;VAR anz:INTEGER;VAR txt,bef: feld);
  829. BEGIN
  830.   anz := 0;
  831.   Reset(f, name);
  832.   IF IOResult = 0 THEN
  833.   BEGIN
  834.     bool:=TRUE;
  835.     Buffer(f, 8000);
  836.     anz:=0;
  837.     WHILE NOT (Eof(f)) AND (anz <= max) DO
  838.     BEGIN
  839.       Inc(anz);
  840.       New(txt[anz]);
  841.       ReadLn(f, txt[anz]^);
  842.       New(bef[anz]);
  843.       ReadLn(f, bef[anz]^);
  844.     END;
  845.     Close(f);
  846.   END ELSE bool:=FALSE;
  847. END;
  848.  
  849. PROCEDURE ReadConfigs;
  850. BEGIN
  851.   ReadC(forumconf,foru,foranz,fortxt,forbef);
  852.   ReadC(allconf,all,allanz,alltxt,allbef);
  853.   ReadC(pcqconf,pcq,pcqanz,pcqtxt,pcqbef);
  854.   ReadC(kickconf,kick,kickanz,kicktxt,kickbef);
  855.   ReadC(hsconf,news,hspasanz,hspastxt,hspasbef);
  856.   ReadC(anlconf,anl,anlanz,anltxt,anlbef);
  857.   Cls;
  858. END;
  859.  
  860. PROCEDURE Init;
  861. BEGIN
  862.   FOR i:=1 TO max DO
  863.   BEGIN
  864.     fortxt  [i]^ := "";
  865.     forbef  [i]^ := "";
  866.     allbef  [i]^ := "";
  867.     alltxt  [i]^ := "";
  868.     pcqtxt  [i]^ := "";
  869.     pcqbef  [i]^ := "";
  870.     kicktxt [i]^ := "";
  871.     kickbef [i]^ := "";
  872.     hspastxt[i]^ := "";
  873.     hspasbef[i]^ := "";
  874.     anltxt  [i]^ := "";
  875.     anlbef  [i]^ := "";
  876.   END;
  877.   sp := NIL;
  878.   wp := NIL;
  879.   gl := NIL;
  880.   OpenStuff;
  881.   ReadConfigs;
  882.   LetsGadget;
  883. END;
  884.  
  885. PROCEDURE Iconify;
  886. VAR
  887.   sig,lok : LONG;
  888.   ok  : BOOLEAN;
  889. BEGIN
  890.   CloseStuff;
  891.   lok := DosClose(fh);
  892.   fh := 0;
  893.   MyAppIcon := AddAppIconA(APPICON_ID,0,"PurityMag",AppPort,NIL,AppObj,NIL);
  894.   IF MyAppIcon=NIL THEN AsdaLaVista(NoAppI, 20);
  895.   ok := FALSE;
  896.   REPEAT
  897.     sig := _Wait(1 SHL AppPort^.mp_SigBit);
  898.     AppMsg := p_AppMessage(GetMsg(AppPort));
  899.     CASE AppMsg^.am_Type OF
  900.       MTYPE_APPICON:
  901.         IF (AppMsg^.am_NumArgs=0) AND (AppMsg^.am_ArgList=NIL) THEN
  902.         BEGIN
  903.           ok := TRUE;
  904.         END;
  905.     ELSE END;
  906.     ReplyMsg(p_Message(AppMsg));
  907.   UNTIL ok;
  908.   ok := RemoveAppIcon(MyAppIcon);
  909.   MyAppIcon := NIL;
  910.   AppMsg := p_AppMessage(GetMsg(AppPort));
  911.   WHILE AppMsg<>NIL DO
  912.   BEGIN
  913.     ReplyMsg(p_Message(AppMsg));
  914.     AppMsg := p_AppMessage(GetMsg(AppPort));
  915.   END;
  916.   fh:=Open(ConWin,MODE_NEWFILE);
  917.   IF fh=0 THEN
  918.   BEGIN
  919.     UserMeldung("Kann keine Konsole öffnen !!")
  920.     HALT(20);
  921.   END;
  922.   OpenStuff;
  923.   LetsGadget;
  924. END;
  925.  
  926. PROCEDURE Hilfe;
  927. LABEL HilfeEnde;
  928. VAR
  929.   g,gad,gad1 : p_Gadget; 
  930.   t : ARRAY[1..10] OF TagItem;
  931.   win : p_Window;
  932.   ok : BOOLEAN;
  933. BEGIN
  934.   g := NIL;  
  935.   g := CreateContext(^g);
  936.   IF g = NIL THEN EXIT;
  937.  
  938.   ng := NewGadget(1,1,wp^.Width-1,wp^.Height-100-15-3,
  939.                   NIL,^tattr,
  940.                   1,0,
  941.                   vi,NIL);
  942.   t[1] := TagItem(GTLV_Labels, LONG(HilfeList));
  943.   t[2] := TagItem(GTLV_ReadOnly, 1);
  944.   t[3].ti_Tag := TAG_DONE;
  945.   gad := CreateGadgetA(LISTVIEW_KIND,g,^ng,^t);
  946.   IF gad = NIL THEN GOTO HilfeEnde;
  947.   
  948.   t[1] := TagItem(GT_Underscore, LONG("_"));
  949.   t[2].ti_Tag := TAG_DONE;
  950.   ng := NewGadget(1,wp^.Height-100-15,wp^.Width-1,14,
  951.                   "_Weiter",^tattr,
  952.                   2,PLACETEXT_IN,
  953.                   vi,NIL);
  954.   gad1 := CreateGadgetA(BUTTON_KIND,gad,^ng,^t);
  955.   IF gad1 = NIL THEN GOTO HilfeEnde;
  956.  
  957.   t[1] := TagItem(WA_Gadgets, LONG(g));
  958.   t[2] := TagItem(WA_Left,0);
  959.   t[3] := TagItem(WA_Top,100);
  960.   t[4] := TagItem(WA_Width,wp^.Width);
  961.   t[5] := TagItem(WA_Height,wp^.Height-t[3].ti_Data);
  962.   t[6] := TagItem(WA_Flags, WFLG_BORDERLESS+WFLG_NOCAREREFRESH+
  963.                   WFLG_SMART_REFRESH+WFLG_ACTIVATE);
  964.   t[7] := TagItem(WA_IDCMP, IDCMP_MOUSEBUTTONS+IDCMP_MOUSEMOVE+
  965.                   IDCMP_INTUITICKS+IDCMP_GADGETUP+IDCMP_GADGETDOWN+
  966.                   IDCMP_RAWKEY);
  967.   t[8] := TagItem(WA_CustomScreen, LONG(sp));
  968.   t[9].ti_Tag := TAG_DONE;
  969.   win := OpenWindowTagList(NIL,^t);
  970.   IF win <> NIL THEN
  971.   BEGIN 
  972.     GT_RefreshWindow(win,NIL);
  973.     ok := FALSE;
  974.     REPEAT
  975.       GetMessage(win,class,code,qual,GadNum);
  976.       CASE class OF
  977.         IDCMP_GADGETUP: IF GadNum = 2 THEN ok := TRUE;
  978.         IDCMP_RAWKEY:
  979.           CASE code OF
  980.             69 : ok := TRUE;
  981.             $11: BEGIN
  982.                    ButSelecter(win,gad1);
  983.                    ok := TRUE;
  984.                  END;
  985.           ELSE END;
  986.       ELSE END;
  987.     UNTIL ok;
  988.     CloseWindow(win);
  989.   END ELSE DisplayBeep(sp);
  990.   
  991. HilfeEnde:
  992.   FreeGadgets(g);
  993. END;
  994.  
  995. PROCEDURE Main;
  996. BEGIN
  997.   ok:=False;
  998.   REPEAT
  999.     msg:=p_IntuiMessage(WaitPort(wp^.UserPort));
  1000.     msg := GT_GetIMsg(wp^.UserPort);
  1001.     class:=msg^.Class;
  1002.     KlickG:=msg^.IAddress;
  1003.     GadNum:=KlickG^.GadgetID;
  1004.     qual:=msg^.Qualifier;
  1005.     code:=msg^.Code;
  1006.     GT_ReplyIMsg(msg);
  1007.     CASE class OF
  1008.       INTUITICKS :
  1009.         BEGIN
  1010.           time;
  1011.         END;
  1012.       GADGETUP:
  1013.        BEGIN
  1014.         CASE GadNum OF
  1015.           1 : Über;
  1016.           2 : BEGIN
  1017.                 Forum;
  1018.                 LetsGadget;
  1019.               END;
  1020.           3 : BEGIN
  1021.                 Allgemeines;
  1022.                 LetsGadget;
  1023.               END;
  1024.           4 : BEGIN
  1025.                 pcqq;
  1026.                 LetsGadget;
  1027.               END;
  1028.           5 : BEGIN
  1029.                 kickk;
  1030.                 LetsGadget;
  1031.               END;
  1032.           6 : BEGIN
  1033.                 Newss;
  1034.                 LetsGadget;
  1035.               END;
  1036.           7 : BEGIN
  1037.                 Anleitungen;
  1038.                 LetsGadget;
  1039.               END;
  1040.           8 : ok:=True;
  1041.           9 : BEGIN
  1042.                 IF lmz THEN liesmz;
  1043.               END;
  1044.         ELSE END;
  1045.        END;
  1046.      RAWKEY :
  1047.        BEGIN
  1048.          IF (qual and 32768)=32768 THEN
  1049.          BEGIN
  1050.            CASE code OF
  1051.             $20 : BEGIN { a }
  1052.                    IF all THEN
  1053.                    BEGIN
  1054.                      ButSelecter(wp,mgad[3]);
  1055.                      Allgemeines;
  1056.                      LetsGadget;
  1057.                    END;
  1058.                  END;
  1059.             $35 : BEGIN { b }
  1060.                    ButSelecter(wp,mgad[8]);
  1061.                    ok:=True;
  1062.                  END;
  1063.             37 : BEGIN { h }
  1064.                    IF news THEN
  1065.                    BEGIN
  1066.                      ButSelecter(wp,mgad[6]);
  1067.                      Newss;
  1068.                      LetsGadget;
  1069.                    END;
  1070.                  END;
  1071.             39 : BEGIN { k }
  1072.                    IF kick THEN
  1073.                    BEGIN
  1074.                      ButSelecter(wp,mgad[5]);
  1075.                      kickk;
  1076.                      LetsGadget;
  1077.                    END;
  1078.                  END;
  1079.             25 : BEGIN { p }
  1080.                    IF pcq THEN
  1081.                    BEGIN
  1082.                      ButSelecter(wp,mgad[4]);
  1083.                      pcqq;
  1084.                      LetsGadget;
  1085.                    END;
  1086.                  END;
  1087.             40 : BEGIN { l }
  1088.                    IF anl THEN
  1089.                    BEGIN
  1090.                      ButSelecter(wp,mgad[7]);
  1091.                      Anleitungen;
  1092.                      LetsGadget;
  1093.                    END;
  1094.                  END;
  1095.             23 : BEGIN
  1096.                    ButSelecter(wp,mgad[1]);
  1097.                    Über;
  1098.                  END;
  1099.             35 : BEGIN { f }
  1100.                    IF foru THEN
  1101.                    BEGIN
  1102.                      ButSelecter(wp,mgad[2]);
  1103.                      Forum;
  1104.                      LetsGadget;
  1105.                    END;
  1106.                  END;
  1107.             95 : BEGIN
  1108.                   Hilfe;
  1109.                  END;
  1110.             33 : IF lmz THEN
  1111.                  BEGIN
  1112.                    ButSelecter(wp,mgad[9]);
  1113.                    LiesmZ;
  1114.                  END;
  1115.             69 : Iconify;
  1116.             194 : BEGIN
  1117.                     DisposeAll;
  1118.                     ReadC(forumconf,foru,foranz,fortxt,forbef);
  1119.                     ReadC(allconf,all,allanz,alltxt,allbef);
  1120.                     ReadC(pcqconf,pcq,pcqanz,pcqtxt,pcqbef);
  1121.                     ReadC(kickconf,kick,kickanz,kicktxt,kickbef);
  1122.                     ReadC(hsconf,news,hspasanz,hspastxt,hspasbef);
  1123.                     ReadC(anlconf,anl,anlanz,anltxt,anlbef);
  1124.                   END;
  1125.            ELSE END;
  1126.          END;
  1127.        END;
  1128.     ELSE END;
  1129.   UNTIL (ok=True);
  1130. END;
  1131.  
  1132. PROCEDURE Defaults;
  1133. BEGIN
  1134.   zurückgad := NIL;
  1135.   def_forum := ":s/forum.conf";
  1136.   def_allge := ":s/allgemein.conf";
  1137.   def_pcq   := ":s/pcq.conf";
  1138.   def_kick  := ":s/kick.conf";
  1139.   def_hspas := ":s/hspas.conf";
  1140.   def_anl   := ":s/anl.conf";
  1141.   forumconf := def_forum;
  1142.   hsconf:=def_hspas;
  1143.   kickconf:=def_kick;
  1144.   allconf:=def_allge;
  1145.   anlconf:=def_anl;
  1146.   pnummer:="0";
  1147.   lies_mich_zuerst := "";
  1148.   lmz := FALSE;
  1149.   vi := NIL;
  1150.   wp := NIL;
  1151.   sp := NIL;
  1152.   pcqanz:=0; hspasanz:=0; kickanz:=0; anlanz:=0; foranz:=0;
  1153.   ConWin := defwin;
  1154.   New(HilfeList);
  1155.   HilfeList^.lh_head := NIL;
  1156.   HilfeList^.lh_tail := NIL;
  1157.   HilfeList^.lh_TailPred := NIL;
  1158.   NewList(HilfeList);
  1159.   Neu(HilfeList,"PURITYMAG - HILFEFUNKTION");
  1160.   Neu(HilfeList,"");
  1161.   Neu(HilfeList,"Nach dem Start des Programms und dem Laden der Konfigurations-");
  1162.   Neu(HilfeList,"dateien erscheint das Hauptmenü.");
  1163.   Neu(HilfeList,"Dort siehst Du so ziemlich in der Mitte, welche Purity Du vor Dir");
  1164.   Neu(HilfeList,"hast. Danach findest Du versch. Gadgets. Einiger dieser Gadgets");
  1165.   Neu(HilfeList,"tragen Aufschriften für eine Rubrik (z.B. PCQ-Programme etc.),");
  1166.   Neu(HilfeList,"in die Du bei Mausklick auf das jeweilige Gadget kommst.");
  1167.   Neu(HilfeList,"Bist Du einmal in einer solchen Rubrik, präsentiert sich ein neuer");
  1168.   Neu(HilfeList,"Bildschirm mit einer Überschrift, die den Rubriknamen trägt, und");
  1169.   Neu(HilfeList,"diverse Gadgets, bei denen Du auf Mausklick Anleitungen liest,");
  1170.   Neu(HilfeList,"Programme startest etc.");
  1171.   Neu(HilfeList,"Sollte jedoch im Hauptmenü einmal ein Rubrikgadget 'ghosted' sein,");
  1172.   Neu(HilfeList,"dann bedeutet dies, daß auf dieser uns vorliegenden PURITY eben");
  1173.   Neu(HilfeList,"diese Rubrik nicht vorhanden ist !!");
  1174.   Neu(HilfeList,"");
  1175.   Neu(HilfeList,"Zurück zum HAUPTMENÜ:");
  1176.   Neu(HilfeList,"");
  1177.   Neu(HilfeList,"Bei Mausklick auf das Gadget 'Info' öffnet sich ein Fenster, das");
  1178.   Neu(HilfeList,"diverse Infos über das Programm enthält,");
  1179.   Neu(HilfeList,"'Quit' beendet die 'Sitzung' mit dem PurityMag,");
  1180.   Neu(HilfeList,"'Lies mich Zuerst' liest eine Datei ein, in der Du diverse Infos");
  1181.   Neu(HilfeList,"über die Purity findest.");
  1182.   Neu(HilfeList,"");
  1183.   Neu(HilfeList,"Ganz unten findest Du noch eine Notiz, in der steht, welche Version");
  1184.   Neu(HilfeList,"vom PurityMag benutzt wird.");
  1185.   Neu(HilfeList,"");
  1186.   Neu(HilfeList,"Die Adresse des Autors:");
  1187.   Neu(HilfeList,"");
  1188.   Neu(HilfeList,"     Björn Schotte");
  1189.   Neu(HilfeList,"     Am Burkardstuhl 45");
  1190.   Neu(HilfeList,"     D-97267 Himmelstadt");
  1191.   Neu(HilfeList,"");
  1192.   Neu(HilfeList,"     Germany/Europe");
  1193.   Neu(HilfeList,"");
  1194.   Neu(HilfeList,"EMail (UseNet): schotte@incubus.sub.org");
  1195.   Neu(HilfeList,"                BomberSoft@bomber.mayn.sub.de");
  1196. END;
  1197.  
  1198. PROCEDURE TestV37;
  1199. VAR
  1200.   lib : p_Library;
  1201. BEGIN
  1202.   lib := IntuitionBase;
  1203.   IF lib^.lib_Version < 37 THEN
  1204.   BEGIN
  1205.     Reset(input,"CON:0/0/300/100/PurityMag");
  1206.     output := input;
  1207.     WriteLn("PurityMag II läuft nur noch ab OS2.04 !!!");
  1208.     Delay(150);
  1209.     Close(input);
  1210.     HALT(20);
  1211.   END;
  1212. END;
  1213.  
  1214. BEGIN
  1215.   TestV37;
  1216.   IF NOT FromWB THEN
  1217.   BEGIN
  1218.     WriteLn(CHR(27),"[1;4mPurityMag-Fehlermeldung:",CHR(27),"[0m");
  1219.     WriteLn;
  1220.     WriteLn(CHR(27),"[1;33mBitte von der Workbench starten !!",#27"[0m");
  1221.     HALT(10);
  1222.   END;
  1223.   Defaults;
  1224.   dummy := InitImage;
  1225.   IF dummy = FALSE THEN
  1226.   BEGIN
  1227.     UserMeldung("Kein freier Speicher für Titelbild !!");
  1228.     HALT(20);
  1229.   END;
  1230.   IF FromWB THEN
  1231.   BEGIN
  1232.     IconBase := OpenLibrary("icon.library", 0);
  1233.     IF IconBase <> NIL THEN
  1234.     BEGIN
  1235.       StartVonWorkbench;
  1236.       CloseLibrary(IconBase);
  1237.     END;
  1238.   END;
  1239.   fh:=Open(ConWin,MODE_NEWFILE);
  1240.   IF fh=0 THEN
  1241.   BEGIN
  1242.     UserMeldung("Kann keine Konsole öffnen !!");
  1243.     FreeImage;
  1244.     HALT(20);
  1245.   END;
  1246.   GadToolsBase := OpenLibrary("gadtools.library", 37);
  1247.   IF GadToolsBase = NIL THEN AsdaLaVista(NoGTLib, 20);
  1248.   WorkbenchBase := OpenLibrary("workbench.library",0);
  1249.   IF WorkbenchBase = NIL THEN AsdaLaVista(NoWBLib,20);
  1250.   InitAppIcon;
  1251.   Init;
  1252.   Main;
  1253.   AsdaLaVista("",0);
  1254. END.
  1255.  
  1256.